<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<body>
<script>
var ctx = document.createElement('canvas').getContext('2d');

function checkPixel(x, y, rgb) {
    assert_array_equals(ctx.getImageData(x, y, 1, 1).data.slice(0,3), rgb);
}

test(function(t) {

    ctx.beginPath();
    ctx.scale(0.5, 0.5);
    ctx.setTransform(1, 0, 0, 1, 0, 0);
    ctx.fillStyle = 'green';
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 128, 0]);
    
    ctx.beginPath();
    ctx.rect(0, 0, 100, 100);
    ctx.save();
    ctx.setTransform(0.5, 0, 0, 0.5, 10, 10);
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, 100, 100);
    ctx.restore();
    ctx.fillStyle = 'green';
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 128, 0]);
    
    ctx.beginPath();
    ctx.fillStyle = 'green';
    ctx.save();
    ctx.setTransform(0.5, 0, 0, 0.5, 0, 0);
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, 100, 100);
    ctx.restore();
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 128, 0]);
    
    ctx.beginPath();
    ctx.fillStyle = 'green';
    ctx.fillRect(0, 0, 100, 100);
    ctx.setTransform(0, 0, 0, 0, 0, 0);
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 128, 0]);
    
    ctx.beginPath();
    ctx.resetTransform();
    ctx.save();
    ctx.setTransform(0, 0, 0, 0, 0, 0);
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, 100, 100);
    ctx.restore();
    ctx.fillStyle = 'blue';
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 0, 255]);
    
    ctx.beginPath();
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, 100, 100);
    ctx.setTransform(0, 0, 0, 0, 0, 0);
    ctx.fillStyle = 'green';
    ctx.fillRect(0, 0, 100, 100);
    ctx.setTransform(1, 0, 0, 1, 0, 0);
    ctx.fillStyle = 'blue';
    ctx.fillRect(0, 0, 100, 100);
    checkPixel(2, 1, [0, 0, 255]);
    
}, "Series of tests to ensure correct behaviour of canvas.setTransform()");
</script>
</body>
